package net.bright.demo.model;

import net.bright.demo.kit.IDKit;

import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.Table;
import com.jfinal.plugin.activerecord.TableMapping;

/**
 * Model基础类，待扩展
 * 
 * @param <M>
 */
public abstract class BaseModel<M extends Model<M>> extends Model<M> {
	private static final long serialVersionUID = 1L;
	private static boolean idAutoInc = true;

	/**
	 * 获取表映射对象
	 * 
	 * @return
	 */
	public Table getTable() {
		return TableMapping.me().getTable(getClass());
	}

	/**
	 * 获取主键值
	 * @return
	 */
	public String getPrimaryKeyValue(){
		return this.getStr(getTable().getPrimaryKey());
	}

	/**
	 * 重写save方法
	 */
	public boolean save() {
		if (!idAutoInc) {
			this.set(getTable().getPrimaryKey(), IDKit.getUuid(true)); // 设置主键值
		}
//		if(getTable().hasColumnLabel("version")){ // 是否需要乐观锁控制
//			this.set("version", Long.valueOf(0)); // 初始化乐观锁版本号
//		}
		return super.save();
	}
}
